//class Solution {
//public:
//    vector<int> preorderTraversal(TreeNode* root) {
//        vector<int> v;
//        stack<TreeNode*> st;
//        TreeNode* pcur = root;
//        while (pcur || !st.empty())
//        {
//            while (pcur)
//            {
//                v.push_back(pcur->val);
//                st.push(pcur);
//                pcur = pcur->left;
//            }
//
//            pcur = st.top();
//            st.pop();
//            pcur = pcur->right;
//        }
//        return v;
//    }
//};